<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of usuario
 *
 * @author xps
 */
class mod_login extends CI_Model{
    //put your code here

    function mod_login()
    {
         parent::__construct();
    }
    function checkUsuario($username,$password)
    {
        $query = $this->db->select('usuario.id_usuario, usuario.nombre, usuario.email, usuario.isadmin, usuario.id_tipo_usuario');
        $query = $this->db->where("LOWER(user)",$username);
        $query = $this->db->where("pass",$password);
        $query = $this->db->where("fecha_expiracion >",unix_to_human(now()));
        $query = $this->db->limit(1,0);
        $query = $this->db->get('usuario');
        if($query->num_rows() > 0) {
            $row = $query->row();
            $data = array(
                    'id_usuario'=>$row->id_usuario,
                   'username'  => $row->nombre,
                   'email'=> $row->email,
                   'isadmin'=> $row->isadmin,
                   'id_tipo_usuario'=> $row->id_tipo_usuario,
                   'fecha_inicio'=> now(),
                   'login' => true);
            $this->session->set_userdata($data);
        }else{
            $this->session->set_flashdata('error',"Usuario o Password Incorrecto");
            return false;
        }
        
        return TRUE;
    }
    function carga_menu($id_tipo_usuario){
        $query = $this->db->select('menu.id_menu,menu.nombre,menu.controlador,menu.metodo,menu.id_menu_padre,permiso_usuario.index');
        $query = $this->db->where("menu.estado",'1');
        $query = $this->db->where("permiso_usuario.index",'1');
        $query = $this->db->where("permiso_usuario.id_tipo_usuario",$id_tipo_usuario);
        $query = $this->db->order_by("menu.id_menu",'ASC');
        $query = $this->db->join('permiso_usuario' , 'permiso_usuario.id_menu = menu.id_menu');
        $query = $this->db->get('menu');
        $i=1;
        if($query->num_rows() > 0) {
            foreach ($query->result() as $row)
            {   
                $permiso_usuario[$i]=array(
                    'id_menu'       => 	$row->id_menu,
                    'text'          => 	$row->nombre,
                    'controlador'   => 	strtolower($row->controlador=="" ? "#" : $row->controlador),
                    'metodo'        => 	strtolower($row->controlador=="" ? "" : ($row->metodo==''? "/index" : "/".$row->metodo)),
                    'parent'        =>	$row->id_menu_padre);
                $i++;
            }
            $permiso_usuario=$this->build_menu($permiso_usuario);
            return $permiso_usuario;
        }else{
            return null;
        }
    }
    function valida_permiso($id_tipo_usuario,$controlador,$metodo){
        $query = $this->db->select('menu.controlador,menu.metodo, permiso_usuario.id_menu, permiso_usuario.index, permiso_usuario.editar, permiso_usuario.nuevo, permiso_usuario.eliminar,permiso_usuario.imprimir, permiso_usuario.detalle');
        $query = $this->db->where("menu.estado",'1');
        $query = $this->db->where("permiso_usuario.id_tipo_usuario",$id_tipo_usuario);
        $query = $this->db->where("menu.controlador",$controlador);
        $query = $this->db->order_by("menu.id_menu",'ASC');
        $query = $this->db->join('menu' , 'menu.id_menu = permiso_usuario.id_menu');
        $query = $this->db->get('permiso_usuario');
        
        if($query->num_rows() > 0) {  
            $row = $query->row();
            
                $permiso_usuario=array(
                    $row->metodo    => 	'1',
                    'index'		=> 	$row->index,
                    'nuevo'		=> 	$row->nuevo,
                    'editar'		=> 	$row->editar,
                    'eliminar'		=> 	$row->eliminar,
                    'imprimir'		=> 	$row->imprimir);
                $datos=explode (";",$row->detalle);
                for ( $j = 0; $j < count ($datos); $j++ ){
                    $permiso_usuario[$datos[$j]]="1";
                }
                if (isset($permiso_usuario[$metodo])) {
                    if (($permiso_usuario[$metodo]=='0')){
                        if ($permiso_usuario['index']=='1'){
                            return "0";
                        }else{
                            return "-1";
                        }
                    }else{
                        return null;
                    }
                }else{
                    if ($permiso_usuario['index']=='1'){
                        return "0";
                    }else{
                        return "-1";
                    }
                }
        }else{
            return "-1";
        }
    }
    
    function build_menu ( $menu )
	{
    $out="";
		for ( $i = 1; $i <= count ( $menu ); $i++ )
		{
			if ( is_array ( $menu [ $i ] ) ) {
				if ($menu [ $i ] [ 'parent' ] == 0 ) {
                    $dato= explode('*',$menu [ $i ] [ 'text' ]);
                    if (count($dato)>1){
                        $titulo=$dato[0];
                        $subtitulo=$dato[1];
                    }else{
                        $titulo=$menu [ $i ] [ 'text' ];
                        $subtitulo="";
                    }
                    if ($titulo!="Login"){
                        $out.='<li>'.anchor($menu[$i]['controlador'].$menu[$i]['metodo'],'<span class="'."".'">'.$titulo.'</span><span class="subTitle">'.$subtitulo.'</span>','class="isMenuItem"');
                        $out .= $this->get_childs ( $menu, $i );
                    }else{
                        $this->session->set_userdata('menu_login',$this->get_childs($menu,$i));
                    }
				}
			}
			else {
				die ( sprintf ( 'menu nr %s must be an array', $i ) );
			}
		}
		return $out;
	}
	
	function get_childs ( $menu, $el_id )
	{
	   $out="";
		for ( $i = 1; $i <= count ( $menu ); $i++ )
		{
			if ( $menu [ $i ] [ 'parent' ] == $menu [ $el_id ]['id_menu']) {//are we allowed to see this menu?
                $out.='<li>'.anchor($menu[$i]['controlador'].$menu[$i]['metodo'],'<span class="'."".'">'.$menu [ $i ] [ 'text'].'</span>');//,'class="isMenuItem"'
				$out .= $this->get_childs ( $menu, $i );
				$out .= '</li>' . "\n";
			}
		}
        if ($out!=""){
            $out="<ul>".$out."</ul>";
        }else{
            $out="";
        }
		return $out;
	}
            
}

?>
